/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package otcapp.controlador.modelocombobox;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import javax.swing.DefaultComboBoxModel;
import otcapp.entidades.Sede;

/**
 *
 * @author diego
 */
public class ModeloComboSede extends DefaultComboBoxModel implements Comparator<Sede> {

    private List<Sede> listaSedes;

    public ModeloComboSede() {
        listaSedes = new ArrayList<>();
        addElement("Seleccione una Sede");


    }

    public ModeloComboSede(List<Sede> nuevalista) {

        listaSedes = nuevalista;
        addElement("Seleccione una Sede");
        for (Sede sede : nuevalista) {
            addElement(sede.getNombreSede());

        }


    }

    public void setListaCombo(List<Sede> nuevalista) {
        listaSedes = nuevalista;
        removeAllElements();
        addElement("Seleccione una Sede");
        for (Sede sede : nuevalista) {
            addElement(sede.getNombreSede());

        }

    }

    public Sede getSedeSeleccionada() {
        Sede oficinaEncontrada = null;
        for (Sede sede : listaSedes) {
            if (sede.getNombreSede().equals(super.getSelectedItem().toString())) {
                oficinaEncontrada = sede;
            }
        }

        return oficinaEncontrada;

    }

    public void agergarSede(Sede nuevaSede) {
        if (listaSedes == null) {
            listaSedes = new ArrayList<>();
            addElement("Seleccione una Sede");
        }
        for (Sede oficina : listaSedes) {
            if (oficina.getNombreSede().equals(nuevaSede.getNombreSede())) {
                return;
            }
        }
        listaSedes.add(nuevaSede);
        super.addElement(nuevaSede.getNombreSede());
    }

    public List<Sede> getListaSedes() {
        return listaSedes;
    }

    public void setSedeaSeleccionada(Sede sedeSeleccionada) {
        if (listaSedes != null) {
            for (Sede sede : listaSedes) {
                if (sede.getNombreSede().equals(sedeSeleccionada.getNombreSede())) {
                    setSelectedItem(sedeSeleccionada.getNombreSede());
                }
            }
        }
    }

    public void quitarSede(Sede sede) {
        for (int i = 0; i < listaSedes.size(); i++) {
            if (listaSedes.get(i).getId() == sede.getId()) {
                listaSedes.remove(i);
                removeElement(sede.getNombreSede());
            }
        }
    }

    public void ordenar() {
        Collections.sort(listaSedes, this);
        removeAllElements();
        addElement("Seleccione una Sede");

        for (Sede sede : listaSedes) {
            addElement(sede.getNombreSede());
        }
    }

    @Override
    public int compare(Sede s1, Sede s2) {
        return s1.getNombreSede().compareToIgnoreCase(s1.getNombreSede());
    }
}
